package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.PesoStandar;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 * 
 */

public class PesoStandarDAO extends GenericSAPDAO{
    
    private List<PesoStandar> misPesosStandar;

    //Constructores
    public PesoStandarDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("TI_ZPESOSTAND");
        super.setMyTable(aFunction);
        this.misPesosStandar = new ArrayList();
    }

    //Getters & Setters

    public List<PesoStandar> getMisPesosStandar() {
        return misPesosStandar;
    }

    //Metodos privados
    /**
     * Agrega un "pesoStandar" a la coleccion "misPesosStandar".
     * @param elPesoStandar
     */
    private void addUnPesoStandar(PesoStandar elPesoStandar) {
        this.misPesosStandar.add(elPesoStandar);
    }

    /**
     * Campos de la Tabla TI_ZPESOSTAND
     * ZESPECIE	ZZESPECIE		CHAR	4 0	Especie de frutas
     * ZVARIEDAD	ZZVARIEDAD      	CHAR	4 0	Variedad de frutas
     * ZENVASE	ZZENVASE		CHAR	6 0	Envase de frutas.
     * ZCALIBRE	ZCALIBRE		CHAR	7 0	calibre de 7 posiciones
     * ZPOS		ZZPOS   		NUMC    2 0	Posición para peso standard
     * ZEMBALAJE	ZZEMBALAJE		CHAR	8 0	Cond. de embalaje de la fruta
     * ZMARK		ZMARCADO		CHAR	1 0	Marca de peso por default.
     * PESOSTD	ZPESOSTD		DEC	8 2	Peso Standard
     */
    
    //Metodos publicos
    /**
    * Recorre "super.getMyTable()" de la RFC y por cada registro crea un "pesoStandar" y lo agrega a "misPesosStandar".
    */ 
    @Override
    public void findAll() throws SapGeneralException {
        PesoStandar pesoStandar;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                pesoStandar=new PesoStandar(super.getMyTable().getString("ZESPECIE"),super.getMyTable().getString("ZVARIEDAD"),super.getMyTable().getString("ZENVASE"),super.getMyTable().getString("ZCALIBRE"),super.getMyTable().getInt("ZPOS"),super.getMyTable().getString("ZEMBALAJE"),((super.getMyTable().getString("ZMARK")).toUpperCase()).equals("X"),super.getMyTable().getDouble("PESOSTD"));
                addUnPesoStandar(pesoStandar);
            }
        
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
        }
    }    
    /**
    * Solo para las pruebas.ç
    * Imprime todos los registros de "super.getMyTable()".
    */    
    @Override
    public void printAll() {
        System.out.println("ZESPECIE"+'\t'+"ZVARIEDAD"+'\t'+"ZENVASE"+'\t'+"ZCALIBRE"+'\t'+"ZPOS"+'\t'+"ZEMBALAJE"+'\t'+"ZMARK"+'\t'+"PESOSTD");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("ZESPECIE")  +
            '\t' + super.getMyTable().getString("ZVARIEDAD") +
            '\t' + super.getMyTable().getString("ZENVASE") +
            '\t' + super.getMyTable().getString("ZCALIBRE") +
            '\t' + super.getMyTable().getString("ZPOS") +
            '\t' + super.getMyTable().getString("ZEMBALAJE") +
            '\t' + super.getMyTable().getString("ZMARK") +
            '\t' + super.getMyTable().getString("PESOSTD")
            );                
        }
    }

}
